home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 23 / Amiga Format AFCD23 (Feb 1998, Issue 107).iso / -seriously_amiga- / shareware / graphics / autolwrender / execute.rexx < prev    next >
OS/2 REXX Batch file  |  1997-12-06  |  9KB  |  222 lines

  1.  
  2. /*******************************************************************************
  3. **                                                                             *
  4. **  AutoLWRendering. ARexx Script for Lightwave 3D v4.0+                       *
  5. **                                                                             *
  6. **  $VER: Execute.rexx  Rev. 1.1 (16 Jun 1995)                                 *
  7. **                      Rev. 1.1a(14 May 1996)                                 *
  8. **                      Rev. 1.2 (10 June 1996)                                *
  9. **                      Rev. 1.2a(16 May 1997)                                 *
  10. **                                                                             *
  11. **  The ARexx program restarts the rendering process beginning from the last   *
  12. **  rendered frame after a black-out, a reboot or a Guru Meditation.           *
  13. **                                                                             *
  14. **  This script requires LightWave3D v4 or higher and AmigaDOS 3.x.            *
  15. **  It works fine also for LW v3.5 writing the proper path both for the Status *
  16. **  file and Lightwave main program. See below and read the manual of the pro- *
  17. **  gram for more details.                                                     *
  18. **                                                                             *
  19. **  Copyright © 1995-96 - Freely distributable - Not for commercial use!       *
  20. **  This script is provided AS IS! No responsability or warranty of an         *
  21. **  unsucceful result you can attribute to ME for its improper use!            * 
  22. **                                                                             *
  23. **  My address is:                                                             *
  24. **                                                                             *
  25. **  Angelo La Spina                                                            *
  26. **  CP 49 - 95013 Fiumefreddo (CT)                                             *
  27. **  Italy - Tel. +39 347 6353119                                               *
  28. **  E-Mail: coming soon...                                                     *
  29. **                                                                             *
  30. ********************************************************************************
  31. *
  32. *    Notes for using:
  33. *
  34. *  First of all you must be sure that your LW-config configuration file is modi-
  35. *  fied in the right way. Edit the file and see below for details.
  36. *
  37. *  This is a tipical LW-config configuration file (v4.x):
  38. *
  39. *  LWCO
  40. *  0
  41. *  ContentsDirectory Toaster:
  42. *  ScenesDirectory Scenes
  43. *  ObjectsDirectory Objects
  44. *  HierarchiesDirectory Scenes
  45. *  SurfacesDirectory Surfaces
  46. *  ImagesDirectory Images
  47. *  OutputDirectory Images
  48. *  FramestoresDirectory Framestore
  49. *  MotionsDirectory Motions
  50. *  EnvelopesDirectory Envelopes
  51. *  PreviewsDirectory Previews          Note:
  52. *  StatusFilename LW-Status <--------- Insert here the name LW-Status.
  53. *  DefaultTension 0.000000             This file contains informations about
  54. *  DefaultSegmentMemory 2200000        the rendering in progress
  55. *  DefaultZoomFactor 3.200000
  56. *  DefaultOverlay 0
  57. *  FrameEndBeep 1
  58. *  RenderDisplayDevice 0
  59. *  RecordSetup1 (none)
  60. *  RecordSetup2 (none)
  61. *  RecordCommand (none)
  62. *  RecordDelay 0.000000
  63. *  FirstFrameDelay 0.000000
  64. *  DefaultLayoutGrid 4
  65. *  AutoKeyAdjust 0
  66. *  ExpertMode 0
  67. *  Plug-Ins.....etc...
  68. *
  69. *  Save it over the old one.
  70. *
  71. *  Now put the Execute ARexx script and its icon into WBStartup drawer and then
  72. *  reboot.If there are errors the script quits otherwise the parameters of your
  73. *  work will appear. Enter them and if it is all right the rendering (re)starts
  74. *  immediately.It's better the partition where all datas are stored shouldn't be
  75. *  formatted using Fast File System (in all variants) but using a more efficient
  76. *  and safe file system as Professional File System (PD available on Aminet) or
  77. *  Ami-FileSafe (which is commercial but a limited demo version is available on
  78. *  Aminet too). This ARexx script is free fully but any contribution is welcome
  79. *  for future improvements. Of course any bug report or comment is welcome too!
  80. *
  81. *  Enjoy! Long life to Amiga and Lightwave 3D in all versions.
  82. *
  83. **********************************************************************************
  84. */
  85.  
  86. /*TRACE RESULTS*/
  87.  
  88. /*ADDRESS COMMAND 'sys:rexxc/tcc'*/
  89.  
  90. PRAGMA('D','TOASTER:')
  91.  
  92. IF EXISTS('ENVARC:Thelastframe') THEN DO     /* This checks if last frame was */
  93.    OPEN('THELASTFRAME','ENVARC:Thelastframe',R) /* rendered. If not it goes over */
  94.    LF=COMPRESS((READLN(THELASTFRAME)),'"')
  95.    CLOSE('THELASTFRAME')
  96.    IF EXISTS(LF) THEN DO
  97.       ADDRESS COMMAND 'requestchoice "WARNING!" "All frames rendered! *n To restart a new work you must delete ALL rendered frames!" "EXIT"'
  98.       CALL ERROROUT
  99.    END
  100. END
  101.  
  102. DO I=0 TO 1
  103.    IF EXISTS('ENVARC:SceneFilename') THEN DO
  104.       OPEN('FILESCENE1','ENVARC:SceneFilename','R')
  105.       FILESCENE=STRIP((READLN(FILESCENE1)),'B','"')
  106.       CLOSE('FILESCENE1')
  107.       IF FILESCENE='' THEN ADDRESS COMMAND 'DELETE >nil: ENVARC:SceneFilename';LEAVE 
  108.       LEAVE
  109.    END
  110.    ELSE ADDRESS COMMAND 'requestfile title "Choose the Scene filename" positive "Choose" noicons >ENVARC:SceneFilename'
  111. END
  112.  
  113. DO I=0 TO 1
  114.    IF EXISTS('ENVARC:ImagePrefix') THEN DO
  115.       OPEN('IMAGEPREFIX1','ENVARC:ImagePrefix','R')
  116.       IMAGEPREFIX=COMPRESS((READLN(IMAGEPREFIX1)),'"')
  117.       CLOSE('IMAGEPREFIX1')
  118.       IF IMAGEPREFIX='' THEN ADDRESS COMMAND 'DELETE >nil: ENVARC:ImagePrefix';LEAVE 
  119.       LEAVE
  120.    END
  121.    ELSE ADDRESS COMMAND 'requestfile title "Enter the Image Prefix" positive "Enter" noicons >ENVARC:ImagePrefix'
  122. END
  123.  
  124. DO I=0 TO 1
  125.    IF EXISTS('ENVARC:StartFrame') THEN DO
  126.       OPEN('STARTFRAME1','ENVARC:StartFrame','R')
  127.       STARTFRAME=COMPRESS((UPPER(READLN(STARTFRAME1))),':.-_,!£$%&()=?|~`''ì\èé+*ò@à#ù§><[]{}"/ABCDEFGHILMNOPQRSTUVZJKXYW')
  128.       CLOSE('STARTFRAME1')
  129.       IF STARTFRAME='' THEN ADDRESS COMMAND 'DELETE >nil: ENVARC:StartFrame';LEAVE 
  130.       LEAVE
  131.    END
  132.    ELSE ADDRESS COMMAND 'requestfile title "Enter the number of the first frame" positive "Enter" noicons rejectpattern #? >ENVARC:StartFrame'
  133. END
  134.  
  135. DO I=0 TO 1
  136.    IF EXISTS('ENVARC:EndFrame')=1 THEN DO
  137.          OPEN('ENDFRAME1','ENVARC:EndFrame','R')
  138.          ENDFRAME=COMPRESS((UPPER(READLN(ENDFRAME1))),':.-_,!£$%&()=?|~`''ì\èé+*ò@à#ù§><[]{}"/ABCDEFGHILMNOPQRSTUVZJKXYW')
  139.          CLOSE('ENDFRAME1')
  140.          IF ENDFRAME>999 THEN ENDFRAME=999
  141.          IF ENDFRAME<STARTFRAME THEN CALL ERROROUT
  142.       IF ENDFRAME='' THEN ADDRESS COMMAND 'DELETE >nil: ENVARC:EndFrame';LEAVE 
  143.       LEAVE
  144.    END
  145.    ELSE ADDRESS COMMAND 'requestfile title "Enter the number of the last frame" positive "Enter" noicons rejectpattern #? >ENVARC:EndFrame'
  146. END
  147.  
  148. DO I=0 TO 1
  149.    IF EXISTS('LW-STATUS') THEN DO
  150.       OPEN('LWSTATUS','LW-STATUS','R')
  151.       IF LWSTATUS='' THEN CALL ERROROUT
  152.       FRAME=WORD(READLN(LWSTATUS),1) /* This deletes two words starting from the     */
  153.       CLOSE('LWSTATUS')              /* second one to isolate the first frame number */
  154.       LEAVE
  155.    END
  156.    ELSE ADDRESS COMMAND 'requestfile title "Search the LW-Status file" positive "Choose" noicons >ENVARC:LWStatusPath'
  157. END
  158. /*
  159. DO I=0 TO 1
  160.    IF EXISTS('ENVARC:LightwavePath') THEN DO
  161.       OPEN('LWPROGRAM1','ENVARC:LightwavePath','R')
  162.       LWPROGRAM=COMPRESS((READLN(LWPROGRAM1)),'"')
  163.       CLOSE('LWPROGRAM1')
  164.       IF LWPROGRAM='' THEN CALL ERROROUT
  165.       LEAVE
  166.    END
  167.    ELSE ADDRESS COMMAND 'requestfile title "Search the Lightwave 3D main program" positive "Choose" noicons #? >ENVARC:LightwavePath'
  168. END
  169. */
  170. SELECT
  171.   WHEN LENGTH(ENDFRAME)=1 THEN ENDFRAME='00'||ENDFRAME
  172.   WHEN LENGTH(ENDFRAME)=2 THEN ENDFRAME='0'||ENDFRAME
  173.   OTHERWISE CALL ERROROUT
  174. END
  175.  
  176. OPEN('THELASTFRAME','ENVARC:Thelastframe',W)  /* This writes a file which contains */   
  177. WRITELN('THELASTFRAME',IMAGEPREFIX||ENDFRAME) /* the full path of the last frame   */
  178. CLOSE('THELASTFRAME')
  179.  
  180. PRAGMA('D','TOASTER:PROGRAMS')
  181.  
  182. ADDRESS COMMAND STACK 55000
  183.  
  184. ADDRESS COMMAND 'run >nil: <nil: ' Lightwave.FP  /* Here starts LW v.4 */
  185.  
  186. ADDRESS COMMAND WAIT 4   /* This is a pause of four seconds necessary until  */
  187.                          /* your startup-sequence will end. Change it if it  */
  188.                          /* is too short or long                             */
  189.  
  190. ADDRESS 'LightWaveARexx.port'                         /* Check LW ARexx Port */
  191.  
  192. ADDRESS COMMAND 'sys:rexxc/WaitForPort' 'LightWaveARexx.port'
  193.  
  194. LoadScene FILESCENE
  195.  
  196. SaveImages IMAGEPREFIX
  197.  
  198. IF FRAME>=STARTFRAME THEN STARTFRAME=FRAME
  199.  
  200. FirstFrame STARTFRAME
  201.  
  202. LastFrame ENDFRAME
  203.  
  204. Render 1                               /* Starts rendering in automatic mode */
  205.  
  206. /* The following lines tell you that your work is completed */
  207. IF EXISTS(LF) THEN DO
  208.    ADDRESS COMMAND 'requestchoice "WARNING!" "All frames rendered! *n To restart a new work you must delete ALL rendered frames!" "EXIT"'
  209.    ADDRESS COMMAND 'DELETE >nil: ENVARC:ImagePrefix ENVARC:StartFrame ENVARC:EndFrame ENVARC:SceneFilename'
  210.      CALL ERROROUT
  211. END
  212.   ELSE ADDRESS COMMAND 'requestchoice "WARNING!" "Rendering Aborted!" "EXIT"'
  213.   CALL ERROROUT
  214.    
  215.  
  216. ERROROUT:
  217. CALL FREESPACE()                   
  218. ADDRESS COMMAND 'sys:rexxc/rxc'    /* This quits ARexx server */
  219.                                    /* and exit from program   */
  220. EXIT
  221. RETURN
  222.